﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using Chilis.Marketing.Common;
using Chilis.Marketing.Business.Logic;
using Chilis.Marketing.Business.Entity;
using System.Data;

public partial class Gral_DetMaterial : System.Web.UI.Page
{
    #region ATRIBUTOS

    private BLMaterial materialBL;
    private BLRecursoMaterial recursoMaterialBL;

    #endregion

    #region PROPIEDADES
    #endregion

    #region METODOS

    private void ActivarControles(bool activo)
    {
        this.txtCodigoMaterial.Enabled = false;
        this.txtDescripcionMaterial.Enabled = false;
        this.txtCosto.Enabled = false;
        this.txtCantidad.Enabled = activo;
    }

    private void CargarDatos(int idRecursoMaterial)
    {
        this.recursoMaterialBL = new BLRecursoMaterial();
        BERecursoMaterial recursoMaterialBE = this.recursoMaterialBL.obtenerRecursoMaterialPorId(idRecursoMaterial);
        if (recursoMaterialBE != null)
        {
            this.txtIdRecursoMaterial.Value = recursoMaterialBE.IdRecurso.ToString();
            if (recursoMaterialBE.Material != null)
	        {
		        this.txtCodigoMaterial.Text = recursoMaterialBE.Material.IdMaterial.ToString().PadLeft(6,'0');
                this.txtDescripcionMaterial.Text = recursoMaterialBE.Material.Descripcion;
	        }
            this.txtCantidad.Text = recursoMaterialBE.Cantidad.ToString();
            this.txtCosto.Text = String.Format("{0:N}", recursoMaterialBE.Costo);
        }
    }


    public BEMaterial ObtenerMaterialBE_WebForm()
    {
        BEMaterial materialBE = new BEMaterial();
        materialBE.Descripcion = this.txtDescripcion.Text.Replace("'", "''");

        if (this.cmbUnidad.SelectedValue != null && this.cmbUnidad.SelectedValue.ToString() != "0")
        {
            int tempIdUnidad = 0;
            int.TryParse(this.cmbUnidad.SelectedValue.ToString(), out tempIdUnidad);
            if (tempIdUnidad != 0)
            {
                materialBE.Unidad = new BEUnidad();
                materialBE.Unidad.IdUnidad = tempIdUnidad;
            }
        }
        materialBE.Estado = Constantes.ESTADO.ACTIVO;
        materialBE.Order_by = (char)Constantes.ORDENAR_POR.CODIGO;
        materialBE.De_forma = (char)Constantes.DE_FORMA.ASCENDENTE;

        return materialBE;
    }

    public BEActividad ObtenerActividadBE_WebForm()
    {
        BEActividad actividadBE = new BEActividad();
        if (Request.QueryString["idac"] != null)
	    {
            int tempIdActividad = Constantes.idValorNulo;
            int.TryParse(Request.QueryString["idac"], out tempIdActividad);
            actividadBE.IdActividad = tempIdActividad;
	    }
        actividadBE.Estado = Constantes.ESTADO.ACTIVO;
        actividadBE.Order_by = (char)Constantes.ORDENAR_POR.CODIGO;
        actividadBE.De_forma = (char)Constantes.DE_FORMA.ASCENDENTE;


        BERecursoMaterial recursoMaterialBE = new BERecursoMaterial();
        if (txtIdRecursoMaterial.Value != string.Empty)
        {
            int tempIdRecursoMaterial = 0;
            int.TryParse(txtIdRecursoMaterial.Value, out tempIdRecursoMaterial);
            recursoMaterialBE.IdRecurso = tempIdRecursoMaterial;
        }
        if (txtCodigoMaterial.Text != string.Empty)
        {
            int tempIdMaterial = 0;
            int.TryParse(this.txtCodigoMaterial.Text, out tempIdMaterial);
            if (recursoMaterialBE.Material == null)
            {
                recursoMaterialBE.Material = new BEMaterial();
            }
            recursoMaterialBE.Material.IdMaterial = tempIdMaterial;
        }
        if (this.txtCantidad.Text != string.Empty)
        {
            int tempCantidad = 0;
            int.TryParse(txtCantidad.Text, out tempCantidad);
            recursoMaterialBE.Cantidad = tempCantidad;
        }
        if (this.txtCosto.Text != string.Empty)
        {
            double tempCosto = 0;
            double.TryParse(txtCosto.Text, out tempCosto);
            recursoMaterialBE.Costo = tempCosto;
        }
        recursoMaterialBE.Estado = Constantes.ESTADO.ACTIVO;
        recursoMaterialBE.Order_by = (char)Constantes.ORDENAR_POR.CODIGO;
        recursoMaterialBE.De_forma = (char)Constantes.DE_FORMA.ASCENDENTE;

        actividadBE.LRecurso = new List<BERecurso>();
        actividadBE.LRecurso.Add(recursoMaterialBE);
        
        return actividadBE;
    }

    public void CargarGrillaListado(bool deBuscar)
    {
        if (deBuscar == true)
        {
            this.gvMateriales.PageIndex = 0;
        }

        BEMaterial materialBE = this.ObtenerMaterialBE_WebForm();
        this.materialBL = new BLMaterial();
        DataTable dt = this.materialBL.buscarMateriales(materialBE);
        this.gvMateriales.DataSource = dt;
        this.gvMateriales.DataBind();
    }

    private void LimpiarFormulario()
    {
        try
        {
            this.txtDescripcion.Text = string.Empty;
        }
        catch (Exception)
        {
        }
    }

    private void CargarTitulos(string tituloTxt)
    {
        this.lblTitulo.Text = tituloTxt;
    }

    #endregion

    #region EVENTOS

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if (!Page.IsPostBack)
            {
                ControlHelper.RegisterClientScriptFile(this, "jquery.js", true);
                ControlHelper.RegisterClientScriptFile(this, "json2.js", true);
                ControlHelper.RegisterClientScriptFile(this, "thickbox.js", true);
                ControlHelper.RegisterClientScriptFile(this, "material.js", true);

                Constantes.ACCION accion = Constantes.ACCION.NINGUNO;
                if (Request.QueryString["acc"] != null)
                {
                    accion = Constantes.ObtenerEnumAccion(Request.QueryString["acc"]);
                }

                switch (accion)
                {
                    case Constantes.ACCION.NINGUNO:
                        break;
                    case Constantes.ACCION.VER:
                        this.CargarTitulos(Mensajes.txtTitulo_RecursoMaterialVer);
                        this.btnAceptar.Visible = false;
                        if (Request.QueryString["id"] != null)
                        {
                            int idMaterial = int.Parse(Request.QueryString["id"].ToString());
                            this.CargarDatos(idMaterial);
                            this.ActivarControles(false);
                        }
                        break;
                    case Constantes.ACCION.NUEVO:
                        this.CargarTitulos(Mensajes.txtTitulo_RecursoMaterialNuevo);
                        this.ActivarControles(true);
                        this.CargarGrillaListado(false);
                        break;
                    case Constantes.ACCION.MODIFICAR:
                        this.CargarTitulos(Mensajes.txtTitulo_RecursoMaterialModificar);
                        if (Request.QueryString["id"] != null)
                        {
                            int idMaterial = int.Parse(Request.QueryString["id"].ToString());
                            this.CargarDatos(idMaterial);
                            this.ActivarControles(true);
                        }
                        break;
                    case Constantes.ACCION.ELIMINAR:
                        this.CargarTitulos(Mensajes.txtTitulo_RecursoMaterialEliminar);
                        if (Request.QueryString["id"] != null)
                        {
                            int idMaterial = int.Parse(Request.QueryString["id"].ToString());
                            this.CargarDatos(idMaterial);
                            this.ActivarControles(false);
                        }
                        break;
                    case Constantes.ACCION.ASOCIAR:
                        break;
                    case Constantes.ACCION.APROBAR:
                        break;
                    case Constantes.ACCION.GENERAR_REPORTE:
                        break;
                    default:
                        break;
                }
            }
        }
        catch (Exception ex)
        {
            Response.Redirect("~/Error.aspx?titError=" + Mensajes.msjeError_CargaRegistros + "&descError=" + ex.Message, false);
        }
    }

    protected void btnBuscar_Click(object sender, EventArgs e)
    {
        try
        {
            this.CargarGrillaListado(true);
        }
        catch (Exception ex)
        {
            Response.Redirect("~/Error.aspx?titError=" + Mensajes.msjeError_CargaRegistros + "&descError=" + ex.Message, false);
        }
    }
    protected void btnLimpiar_Click(object sender, EventArgs e)
    {
        this.LimpiarFormulario();
    }
    protected void gvMateriales_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        this.gvMateriales.PageIndex = e.NewPageIndex;
        this.CargarGrillaListado(false);
    }
    protected void gvMateriales_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            Control btnAgregarInst = e.Row.FindControl("btnAgregarItem");
            if (btnAgregarInst != null)
            {
                StringBuilder click = new StringBuilder();
                string codigo = ((Label)e.Row.FindControl("lblCodigo")).Text;
                string descripcion = ((Label)e.Row.FindControl("lblDescripcion")).Text;
                string costo = ((Label)e.Row.FindControl("lblCosto")).Text;

                //nombreGrilla, rowIndex, ctrId, Id, ctrNom, Nom, ctrCosto, Cos
                click.AppendLine(String.Format("onGrillaFilaSeleccionada('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}')", this.gvMateriales.ClientID,
                                                                                                                              e.Row.RowIndex,
                                                                                                                              this.txtCodigoMaterial.ClientID,
                                                                                                                              codigo,
                                                                                                                              this.txtDescripcionMaterial.ClientID,
                                                                                                                              descripcion,
                                                                                                                              this.txtCosto.ClientID,
                                                                                                                              costo));
                e.Row.Attributes.Add("onclick", click.ToString());
            }
        }
    }

    protected void btnAceptar_Click(object sender, EventArgs e)
    {
        try
        {
            Constantes.ACCION accion = Constantes.ACCION.NINGUNO;
            if (Request.QueryString["acc"] != null)
            {
                accion = Constantes.ObtenerEnumAccion(Request.QueryString["acc"]);
            }
            //if (!ValidarDatosIngreso())
            //{
            //    return;
            //}

            this.recursoMaterialBL = new BLRecursoMaterial();
            BEActividad actividadBE = this.ObtenerActividadBE_WebForm();
            string msjeError = "";
            string msjeExitoOperacion = "";
            string msjeErrorOperacion = "";
            bool result = false;

            switch (accion)
            {
                case Constantes.ACCION.NINGUNO:
                    break;
                case Constantes.ACCION.VER:
                    break;
                case Constantes.ACCION.NUEVO:
                    msjeErrorOperacion = Mensajes.msjeError_InsertarRegistro;
                    msjeExitoOperacion = Mensajes.msjeExito_InsertarRegistro;
                    result = this.recursoMaterialBL.insertarRecursoMaterial(actividadBE);
                    break;
                case Constantes.ACCION.MODIFICAR:
                    msjeErrorOperacion = Mensajes.msjeError_ModificarRegistro;
                    msjeExitoOperacion = Mensajes.msjeExito_ModificarRegistro;
                    result = this.recursoMaterialBL.modificarRecursoMaterial(actividadBE);
                    break;
                case Constantes.ACCION.ELIMINAR:
                    msjeErrorOperacion = Mensajes.msjeError_EliminarRegistro;
                    msjeExitoOperacion = Mensajes.msjeExito_EliminarRegistro;

                    if (actividadBE.LRecurso != null && actividadBE.LRecurso.Count > 0)
                    {
                        BERecursoMaterial recursoMaterialBE = (BERecursoMaterial)actividadBE.LRecurso[0];
                        recursoMaterialBE.Estado = Constantes.ESTADO.INACTIVO;
                        result = this.recursoMaterialBL.eliminarRecursoMaterial(recursoMaterialBE);
                    }
                    else
                    {
                        result = false;
                    }
                    break;
                case Constantes.ACCION.ASOCIAR:
                    break;
                case Constantes.ACCION.APROBAR:
                    break;
                case Constantes.ACCION.GENERAR_REPORTE:
                    break;
                default:
                    break;
            }

            if (result == false)
            {
                Response.Redirect("~/Error.aspx?titError=" + Mensajes.msjeError_General + "&descError=" + msjeError, false);
            }
            else
            {
                System.Text.StringBuilder sb = new System.Text.StringBuilder();
                sb.Append(@"<script language='javascript'>");
                sb.Append(@"parent.location.reload(1);");
                sb.Append(@"self.parent.tb_remove();");
                sb.Append(@"</script>");

                if (!ClientScript.IsStartupScriptRegistered("JSScriptRecMat"))
                {
                    ClientScript.RegisterStartupScript(this.GetType(), "JSScriptRecMat", sb.ToString());
                }

                //ClientScript.RegisterStartupScript(this.GetType(), "Mensaje de Confirmación", "<script language='JavaScript'>alert('" + msjeExitoOperacion + "');window.location.href ='Material.aspx';</script>");
            }

        }
        catch (Exception ex)
        {
            Response.Redirect("~/Error.aspx?titError=" + Mensajes.msjeError_General + "&descError=" + ex.Message, false);
        }
    }

    #endregion



}